#include<bits/stdc++.h>
using namespace std;
int x[100009];
int i,j,n,m,L,V;
int ans,ans2;
int o[100009],p[100000];
int y[100009],z[100009][100009];
int cs(float l,int s,int a)
{
    int d;
   if(a==0)
   {
       if(s>V)
       {
           for(j=1;j<=m;j++)
           {
               if(y[j]>l) z[ans][j]=1;
           }
       }
   }
   if(a>0)
   {
       d=(V*V-s*s)/2/a+l;
       for(j=1;j<=m;j++)
           {
               if(y[j]>d) z[ans][j]=1;
           }
   }
   else
   {
    d=(V*V-s*s)/2/a+l;
    for(j=1;j<=m;j++)
           {
               if(y[j]>l&&y[j]<d) z[ans][j]=1;
           }
   }
}
int main()
{
    freopen("detect.in","r",stdin);
    freopen("detect.out","w",stdout);
    int e,t;
    int u=0,ans2=0;
    cin>>t;
    for(e=1;e<=t;e++)
    {
        cin>>n>>m>>L>>V;
        ans=1;
        ans2=0;
        u=0;
        int r,h;
        for(i=1;i<=n*3;i++) cin>>x[i];
        for(i=1;i<=m;i++) cin>>y[i];
        for(i=1;i<=n;i+=3) cs(x[i],x[i+1],x[i+2]);
        cout<<ans-1;
        for(j=1;j<=m;j++)
        {
            h=0;
            for(i=1;i<=ans;i++)
            {
                if(z[i][j]==1)
                {
                   o[i]=1;
                }
            }
            for(r=1;r<=ans;r++)
            {
                if(p[r]!=1&&o[r]==1)
                {
                    u++;
                    p[r]=1;
                }
                if(p[r]==1&&o[r]!=1) h++;
            }
            if(h!=0) ans2++;
            if(u==ans) break;
        }
        cout<<m-ans2;
    }
    return 0;
}
